package cn.csc.module.shoppingCard.controller.admin.transaction.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDateTime;

import static cn.csc.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
* 交易记录 Base VO，提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
*/
@Data
public class CardTransactionBaseVO {

    /**
     * 项目ID
     */
    @ApiModelProperty(value = "项目ID")
    private BigInteger projectId;

    /**
     * 关联的卡ID
     */
    @ApiModelProperty(value = "关联的卡ID")
    private BigInteger cardId;

    /**
     * 关联的卡号
     */
    @ApiModelProperty(value = "关联的卡号")
    private BigInteger cardNumber;

    /**
     * 交易类型（1-充值，2-消费，3-退款，4-冻结，5-解冻）
     */
    @ApiModelProperty(value = "交易类型（1-充值，2-消费，3-退款，4-冻结，5-解冻）")
    private Byte txnType;

    /**
     * 交易金额（正数表示收入，负数表示支出）
     */
    @ApiModelProperty(value = "交易金额（正数表示收入，负数表示支出）")
    private BigDecimal amount;

    /**
     * 状态(0-创建，1-完成)
     */
    @ApiModelProperty(value = "状态(0-创建，1-完成)")
    private Byte status;

    /**
     * 关联的订单号
     */
    @ApiModelProperty(value = "关联的订单号")
    private BigInteger relatedOrder;

    /**
     * 关联的订单子项ID
     */
    @ApiModelProperty(value = "关联的订单子项ID")
    private BigInteger relatedOrderItem;

    /**
     * 交易时间
     */
    @ApiModelProperty(value = "交易时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime txnTime;

    /**
     * 备注（如充值渠道、消费商户信息）
     */
    @ApiModelProperty(value = "备注（如充值渠道、消费商户信息）")
    private String remark;

}
